//定义游戏对象 相当于 小蛇和食物属于游戏的对象 自调用函数 --自执行函数
;
//需要哪些属性，应该直接放到构造函数中
(function() {
    function Game(map) {
        this.map = map
        this.food = new Food()
        this.snake = new Snake()
        that = this //改变this的指向
    }
    //初始化游戏
    Game.prototype.init = function() {
            //初始化食物
            this.food.init(this.map)
                //添加一个方法 初始化这个方法 小蛇自己动
            this.runSnake()
            this.bindSnake()
        }
        //小蛇运行的方法
    Game.prototype.runSnake = function() {
            var timer = setInterval(() => {
                this.snake.init(this.map)
                this.snake.move(this.map, this.food)
                    //小蛇装到墙游戏结束
                    //横坐标最大的范围
                let maxX = this.map.offsetWidth / this.snake.width
                if (this.snake.body[0].x >= maxX || this.snake.body[0].x < 0) {
                    clearInterval(timer)
                    alert('游戏结束')
                }
                //纵坐标最大的范围
                let maxY = this.map.offsetHeight / this.snake.height
                if (this.snake.body[0].y >= maxY || this.snake.body[0].y < 0) {
                    clearInterval(timer)
                    alert('游戏结束')
                }
            }, 150);
        }
        //添加键盘的控制方法，操作小蛇
    Game.prototype.bindSnake = function() {
            document.addEventListener('keydown', function(e) {
                switch (e.keyCode) {
                    case 37:
                        this.snake.dirctor = "left";

                        break;
                    case 38:
                        this.snake.dirctor = "top";
                        break;
                    case 39:
                        this.snake.dirctor = "right";

                        break;
                    case 40:
                        this.snake.dirctor = "bottom";

                        break;


                }
            }.bind(that), false)
        }
        //把构造函数放到全局的window中，便于全局调用

    window.Game = Game
}())
//外部调用游戏对象，开始游戏
var g1 = new Game(document.querySelector('.map'))
g1.init()